As it is generally known in computer science, a queue is a data structure in which entries (also known as “elements” or “items”) are removed in the same order they were entered. Queue operation is often referred to as FIFO (first in, first out). The two basic operations associated with a queue are enqueue and dequeue. Enqueue means adding a new entry to the rear of the queue, while dequeue refers to removing the front item from queue. Queues are often used to store incoming service requests for systems that process those requests.
Many queue applications exist in which multiple operations for multiple destinations are placed into a single queue, and the order that the operations arrive at each destination must be the same as the order in which they were added to the queue. In other words, per-destination operation order must be preserved, such that operations for a given destination must be delivered to that destination in the order in which they were queued. For example, operations received from multiple sources and queued for delivery to multiple destination databases must be handled in this way. Per-destination operation order must also be maintained in the case of data replication operations within a distributed database and/or between members of a server cluster, and in other contexts.
Significant performance limitations may be encountered in terms of maximizing throughput when a single queue is used to pass operations from multiple sources to multiple destinations. These limitations often result from serial processing of queue entries, and the inability of existing systems to dynamically provide parallelization of queue entry processing.
For the above reasons and others, it would be desirable to have a new system for maximizing the throughput of queue processing steps in a queuing system, while at the same time maintaining per-destination order of operations with regard to operations passed from multiple sources to multiple destinations.